package org.jaaksi.kottlindemo.hilt

import libcore.util.ToastUtil
import javax.inject.Inject

// 在 Truck 类的构造函数上声明了一个 @Inject 注解，其实就是在告诉 Hilt，你是可以通过这个构造函数来安排一辆卡车的。
class Truck @Inject constructor(val driver: Driver) {

    // 这里Engine是个接口，所以Hilt不知道怎么初始化它，要声明一个Module，并且提供@Binds方法
    @BindGasEngine
    @Inject
    lateinit var gasEngine: Engine

    @BindElectricEngine
    @Inject
    lateinit var electricEngine: Engine

    fun deliver() {
        gasEngine.start()
        electricEngine.start()
        println("Truck is delivering cargo. Driven by $driver")
        gasEngine.shutdown()
        electricEngine.shutdown()
    }
}